1. Field of the Invention
The present invention relates to initializing devices and, more particularly, to a method of providing a means designed to efficiently initialize multiple devices using a job scheduling technique.
2. Description of the Related Art
Products that include multiple devices have increased in popularity, and it is necessary to initialize the devices in order for the product features to provide their service.
Furthermore, as a product becomes increasingly complicated and bulky, the types of devices and the number of devices constituting the product increase. Accordingly, the device initialization process has become more important when determining the value of the product. Thus, a key goal of device initialization is to perform stable initialization in the shortest amount of time possible.
FIG. 1 is a flowchart illustrating an example of a conventional process of initializing a device.
For a single device performing a predetermined function that provides a specific service, the device driver must undergo an initialization process for driving the device before the device is ready to provide its service.
That is, when a device driver that controls the device is started by an embedded operating system (step S100), the hardware and/or software requirements for the device initialization are checked to see if they have been satisfied (step S110). If the initialization requirements have not been satisfied, the device driver remains in a standby state and the device is periodically checked to see if those requirements have been satisfied. If the requirements have been satisfied, the initial values are set in accordance with the requirements (step S120). Then, a check is performed to see if all the initial values have been set for the initialization of the device driver (step S130). If all the initial values have been set, the device is initialized to enter a standby state prior to providing the pertinent service. That is, service standby initialization is performed (step S140). Then, the device initialization process terminates (step S150). On the other hand, if all the initial values have not been set (step S130), the process returns to checking initialization requirements (step S110).
FIG. 2 is a flowchart illustrating an example of a conventional process of initializing multiple devices.
When a single system includes multiple devices, all the devices must be initialized in order for the system to provide a predetermined service that requires the initialization of each device. For example, when a system is comprised of three devices A, B, and C, as illustrated in steps S210-S230 of FIG. 2, the devices A, B, and C are sequentially initialized.
A specific, non-limiting example of a device initialization method may be a Linux kernel in an x86-based Linux system that sequentially executes various device drivers in order to perform device initialization. In this case, each device driver module probes for a device that it supports, and then it initializes the device and registers the pertinent service with the Linux kernel in a predetermined way. Because all the devices are initialized by repeating the above process for all the device driver modules, the process requires several minutes to boot.
Consequently, as is evident from FIGS. 1 and 2, the conventional device initialization process suffers from CPU idle-time due to the wait-periods and repeated performance of steps S110 and S130 each time a device is initialized. Because a significant amount of time is used to initialize a device that is slower than the CPU, the CPU idle-time increases, which then reduces the efficiency of the device initialization process. Thus, it is highly desirable to have a method of efficiently initializing multiple devices without wasting CPU resources.